This invention relates to signal processing systems, and more particularly to systems and methods for operating digital signal processor-based systems in such fashion that they can readily be programmed in high level language to perform complex functions while at the same time making best use of the specially designed capabilities of the systems and processors.
Single chip digital signal processors (DSPs) were first introduced about ten years ago. They were highly specialized processors designed for executing numerical algorithms such as Fast Fourier Transform (FFT) and digital filters. The designs were usually characterized by pipelining arrangements for high speed arithmetic, memory, access and I/O functions. In the last few years, DSPs have begun to include more general purpose hardware capabilities that allow them to take on very large application programs which may also include system functions such as real-time control, communication with other processors, memory management, and I/O management. For many applications they are employed as a co-processor together with a general purpose microprocessor as the host. This combination provides greatest versatility while enabling the DSP to function most efficiently for particular operations. Because of the limited capabilities of the earlier generation DSPs, the software tools available for them are relatively primitive. Typically, the first and second generation DSPs are programmed in assembly level languages that are highly specific to the DSP hardware. With the introduction of the newer and more powerful (third and fourth generation) DSP architectures, assembly language programming poses severe limitations to writing large programs with more functionality. Because of the high cost of software for large application programs, portability across different DSP architectures has also become an important consideration.
A first step towards solving the software demands of the new DSPs is the development of standard high level programming languages (for example C language) for DSPs. Such standard programming languages provide significant improvement in the programmability of DSPs and the portability of application programs from one DSP platform to another. Standard high level languages like C, however, are deficient in addressing several critical requirements of real-time signal processing systems based on DSPs. Applications written in C cannot take advantage of the highly specialized architectures of DSPs. A signal processing algorithm written in C may be only 5% efficient compared to an assembly programmed version of the same algorithm. Furthermore, high level languages like C do not address other system requirements of signal processing applications, such as control, I/O, and memory management. One of the prior approaches toward facilitating programming signal processing algorithms for DSPs is to provide math libraries coded in assembly language. Some of these libraries are program segments which must be inserted into the user's assembly language program by "cut-and-paste". A number of manufacturers of signal processing systems or floating point accelerators have also developed math libraries which are callable from a standard language like C or Fortran. While such math libraries can save programmers time and effort in learning the intricate details of signal processing algorithms and hardware architectures, they are often highly specific to the manufacturer's hardware system. Such math libraries provide only acceleration for mathematical routines and do not address other system functions (such as I/O and memory management) which are also critical to performance.
Some of the software requirements for DSPs discussed above are similar to those encountered by users of general purpose microprocessors for advanced real-time control applications. A number of real-time operating systems or real-time kernels have been developed for general purpose microprocessors to address the software need. These real-time kernels are essentially a library of routines that provide high level capabilities, such as task scheduling and synchronization, needed in many real-time control applications. Some of the real-time kernels also provide I/O and communication functions. Real-time operating kernels for general purpose microprocessors, however, are not typically appropriate for DSP applications. They also do not satisfy key requirements of DSP applications, such as mathematical, memory management, and I/O functions that make efficient use of DSP architecture and associated hardware peripherals.
There is a need, therefore, for a real-time operating system approach for DSPs which addresses and meets the more comprehensive needs of DSP architectures for both programming and operating efficiency. Such a system provides a basis for improving the operation of any general purpose microprocessor-based system as well.
Relative to programming efficiency and providing a hardware independent interface object-oriented programming approaches have been widely adopted for general purpose computers, but these have largely been notably inefficient and therefore not appropriate for signal processing. The present invention provides a highly efficient object-oriented system for signal processing and other purposes.
The following, previously published, documents are referenced as supplying details of implementation of various operating sequences or associated hardware or software, in systems and methods in accordance with the invention:
1. "Getting Started with SPOX," Spectron Microsystems, Inc. publication DN 80102-C (Mar. 31, 1989).
2. "SPOX Programming Reference Manual," Spectron Microsystems, Inc. publication DN 80101-E (May 11, 1989).
3. "Adding Math Functions to SPOX [TMS320C30 Version]," Spectron Microsystems, Inc. publication DN 80105-B (Mar. 31, 1989).
4. "Compiling and Linking SPOX Programs [TMS320C30 Version]," Spectron Microsystems, Inc. publication DN 82018-A (May 31, 1989).
5. "SPOX-RTK User's Guide [TMS320C30 Version],"Spectron Microsystems, Inc. publication DN 82016-B (May 31, 1989).
6. "SPOX-RTK Reference Manual [TMS320C30 Version]," Spectron Microsystems, Inc. publication DN 82017-B (May 31, 1989).
7. "SPOX-RTK Installation Notes [TMS320C30 Version]," Spectron Microsystems, Inc. publication DN 82015-A (May 31, 1989).
8. "SPOX/XDS User's Guide," Spectron Microsystems, Inc. publication DN 80103-C (May 31, 1989).
9. "The C Programming Language," Kernighan and Ritchie, 2nd Edition, Prentice Hall, Englewood Cliffs, NJ 07632 (1988).
10. "Third Generation TMS320 User's Guide, SPRU031," Texas Instruments (August, 1988).
11. "TMS320C30 C Compiler Reference Guide," Texas Instruments, SPRU034 (December, 1988).
12. "TMS320C30 Assembly Language Tools User's Guide,"SPRU035, Texas Instruments (November, 1988).
13. "TMS320C30 Application Board User's Guide, SPRU040," Texas Instruments (1989).
14. "TMS320C30 Software Development System User's Guide," SPRU013, Texas Instruments (September 1988).
15. "TLC320441, TLC32044C Voice-Band Analog Interface Circuits," D3098, Texas Instruments (March 1988).